昨天,我們已建立完隨機森林,那今天,我打算使用回歸方法去看他得出來結果,所以會跟基尼係數預測類別方法,有些不同:
這邊會列出不太一樣的地方第一個是分割不採用基尼係數,而是採用MSE最小,作為最佳分割點:
我把原本基尼係數程式保留以做為參考
def Best_Feature_reg(data):
#1為最大(效果最差)
#best_Gini_cofe = 1
#利用MSE最小值作為劃分值
best_R2 = float('inf')
#位置最小為0,先設定-1
best_feature_col = -1
#因為數值有可能正或負,所以先設定None
best_split_value = None
#第i個特徵
for l in data.columns:
# print("第",i,"個特徵")
if l==0:
continue
feat_list = [k for k in data[l]]
sortfeats = sorted(list(set(feat_list)))
#print("排序好特徵資料:",sortfeats)
split_list = []
if len(sortfeats)==1:
splitList=sortfeats
else:
for j in range(len(sortfeats) - 1):
split_list.append(np.round((sortfeats[j] + sortfeats[j + 1]) / 2,5))
#print("節點:",split_list)
#每個劃分點都測試
for split_value in split_list:
subdata1, subdata2 = split_Data_Set(data, l, split_value)
lenLeft, lenRight = len(subdata1), len(subdata2)
# 防止其中一邊為空
if lenLeft == 0 and lenRight != 0:
rightMean = np.mean(subdata1)
R2 = np.mean([(x - rightMean)**2 for x in subdata1])
elif lenLeft != 0 and lenRight == 0:
leftMean = np.mean(subdata2)
R2 = np.mean([(x - leftMean) ** 2 for x in subdata2])
else:
leftMean, rightMean = np.mean(subdata2), np.mean(subdata1)
leftR2 = np.mean([(x - leftMean)**2 for x in subdata2])
rightR2 = np.mean([(x - rightMean)**2 for x in subdata1])
#把MSE相加
R2 = leftR2 + rightR2
if R2 < best_R2:
best_R2 = R2
best_feature_col = l
best_split_value = split_value
# new_Gini = Gini_cofe(subdata1, subdata2)
# #如果基尼係數較小代表比較好
# if new_Gini < best_Gini_cofe:
# best_Gini_cofe = new_Gini
# best_feature_col = l
# best_split_value = split_value
return best_feature_col, best_split_value
best_feature_col, best_split_value=Best_Feature_reg(data)
print("最佳分割特徵為: 第",best_feature_col,"特徵")
print("最佳分割特徵數值為:",best_split_value)
結果如下:
最佳分割特徵為: 第 2 特徵
最佳分割特徵數值為: 0.4495
除了這個還有就是如果是特徵都分完還不能分類-->就用資料平均值
下去做即可
import random as rd
def one_feature_check_reg(data):
if len(data[0])==1:
return np.mean(data)
else:
return False
-->其餘方法基本上都相同,所以就不再贅述
好,今天隨機森林算是完成了,明天就開始研究支持向量機
男孩看了桌上娃娃,他突然覺得心情悲傷了起來,而且感覺有東西卡在喉嚨裡,男孩掐住自己喉嚨試圖把東西吐出來,但毫無作用,緊接著東西不小心被他吞了下去,男孩發現他的胸口自己發出了聲音,而那聲音正是剛剛聽到的歌聲,男孩看了一下桌子,發現娃娃和桌子都消失不見,只剩下空蕩蕩的屋子,和不斷發出歌聲的胸口
--|一部份是我,一部份是你,只是你想不起來|-- MS.CM